home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mission 3
/
Mission 3.zip
/
Mission 3.iso
/
zugabe
/
va45
/
visual45
/
library
/
extend
/
xbra.s
< prev
Wrap
Text File
|
1998-05-16
|
3KB
|
113 lines
;------------------------------------------------------------------------------
; Method name : -
; Asm label : GWVA_XBRA_SEARCH_ONE_XBRA
; Description : Fonction de recherche d'une fonction respectant la norme XBRA
;
; Rq : Fonction à exécuter en superviseur (SUPEXEC)
;
; in : GWVA_ROOT_SEARCH_IN_OUT.l = pointeur sur le vecteur de départ de recherche
; in : GWVA_ROOT_SEARCH_IN_OUT.l+4 = texte XBRA à rechercher
; out : GWVA_ROOT_SEARCH_IN_OUT.l = ptr sur le mot long après la chaine
; donnée comme recherche ou 0.l si pas trouvé
;
; 16/05/98 : Création
;------------------------------------------------------------------------------
GWVA_XBRA_SEARCH_ONE_XBRA:
move.l ([GWVA_APP_OBJ_SEARCH_IN_OUT]),a0
move.l GWVA_APP_OBJ_SEARCH_IN_OUT+4,d0
clr.l GWVA_APP_OBJ_SEARCH_IN_OUT
.search: cmp.l #'XBRA',xbra_magic(a0)
bne.s .fin_liste
cmp.l xbra_id(a0),d0
beq.s .found
move.l xbra_next(a0),a0
cmp.l #0,a0
beq.s .fin_liste
bra.s .search
.found: move.l a0,GWVA_APP_OBJ_SEARCH_IN_OUT
.fin_liste: rts
;------------------------------------------------------------------------------
; Method name : -
; Asm label : GWVA_XBRA_INSTALL_ONE_XBRA
; Description : Fonction pour installer une fonction à la norme XBRA
;
; Rq : Fonction à exécuter en superviseur (SUPEXEC)
; Rq : Ne teste pas s'il existe déjà, à vous de le faire en vous servant
; Rq : de GWVA_XBRA_SEARCH_ONE_XBRA
;
; in : GWVA_ROOT_SEARCH_IN_OUT.l = pointeur sur le vecteur à changer
; in : GWVA_ROOT_SEARCH_IN_OUT.l+4 = pointeur sur votre routine à la norme XBRA
; XBRA, "TEXT", 0.l
; out : GWVA_ROOT_SEARCH_IN_OUT.l = GWVA_NO_ERROR_GENERIC si installe correcte
; GWVA_ERROR_GENERIC sinon
;
; 16/05/98 : Création
;------------------------------------------------------------------------------
GWVA_XBRA_INSTALL_ONE_XBRA:
move.l GWVA_ROOT_SEARCH_IN_OUT,a0
move.l GWVA_ROOT_SEARCH_IN_OUT+4,a1
move.l #-1,GWVA_ROOT_SEARCH_IN_OUT
cmp.l #'XBRA',xbra_magic(a1)
bne.s .cannot_install
tst.l xbra_next(a1)
bne.s .cannot_install
move.l (a0),xbra_next(a1)
move.l a1,(a0)
move.l #GWVA_NO_ERROR_GENERIC,GWVA_ROOT_SEARCH_IN_OUT
rts
.cannot_install:
move.l #GWVA_ERROR_GENERIC,GWVA_ROOT_SEARCH_IN_OUT
rts
;------------------------------------------------------------------------------
; Method name : -
; Asm label : GWVA_XBRA_REMOVE_ONE_XBRA
; Description : Fonction pour enlever une fonction respectant la norme XBRA
;
; Rq : Fonction à exécuter en superviseur (SUPEXEC)
;
; in : GWVA_ROOT_SEARCH_IN_OUT.l = pointeur sur le vecteur pointant sur la fonction
; in : GWVA_ROOT_SEARCH_IN_OUT.l+4 = texte de la fonction XBRA
; out : GWVA_ROOT_SEARCH_IN_OUT.l = GWVA_NO_ERROR_GENERIC si enlèvement correcte
; GWVA_ERROR_GENERIC sinon
;
; 16/05/98 : Création
;------------------------------------------------------------------------------
GWVA_XBRA_REMOVE_ONE_XBRA:
move.l GWVA_ROOT_SEARCH_IN_OUT,a0
move.l GWVA_ROOT_SEARCH_IN_OUT+4,d0
move.l #GWVA_ERROR_GENERIC,GWVA_ROOT_SEARCH_IN_OUT
.search: move.l (a0),a1 ; a0=ptr sur struct XBRA
cmp.l #0,a1
beq.s .fin_liste
cmp.l #'XBRA',xbra_magic(a1)
bne.s .fin_liste
cmp.l xbra_id(a1),d0
beq.s .found
lea xbra_next(a1),a0
bra.s .search
.found: move.l xbra_next(a1),(a0)
clr.l xbra_next(a1)
move.l #GWVA_NO_ERROR_GENERIC,GWVA_ROOT_SEARCH_IN_OUT
.fin_liste: rts